Skip to content

test(e2e): accept FAILED for #07 aout_custom_retry, matching its siblings - #152

Merged
manan164 merged 1 commit into
mainfrom
fix/guardrail-matrix-retry-fix-valid-statuses
Jul 29, 2026
Merged

test(e2e): accept FAILED for #07 aout_custom_retry, matching its siblings#152
manan164 merged 1 commit into
mainfrom
fix/guardrail-matrix-retry-fix-valid-statuses

Conversation

@manan164

Copy link
Copy Markdown
Contributor

Suite 17: Guardrail Matrix has 27 cases. Their validStatuses split:

value cases
BOTH (COMPLETED|FAILED) 19 — every retry and most fix cases
["FAILED"] 5 — the raise cases
["COMPLETED"] 2#07 aout_custom_retry, #09 aout_custom_fix

#07 is the outlier. Retry is model-dependent — the agent may or may not drop MARKER42 within max_retries — and since conductor-oss/conductor#1365 a retry that exhausts escalates to raise instead of looping to the agent turn cap, so the run legitimately ends FAILED. Every other retry case already accepts both (#3, #6, #12, #15, #21, #24).

This doesn't weaken the assertion that matters: notContains: "MARKER42" is still checked whenever the run COMPLETEs, so a leak still fails.

Not changed: #27 tout_custom_fix

It also fails on server 3.32.0-rc18, and I've left it strict on purpose.

#09 aout_custom_fix keeps ["COMPLETED"] and asserts contains: "REDACTED" — and it passes. So agent-output fix reliably applies the fix and completes, while tool-output fix does not. That asymmetry looks like a defect in the tool-output fix path rather than a flaky assertion, and relaxing #27 would hide it.

Worth someone with context on GuardrailCompiler.compileToolGuardrailTasks confirming whether the custom worker's fixed_output reaches the normalize script on the tool path. The script itself is fine — verified directly in GraalJS: fix + fixed_output stays fix, fix without it escalates to raise, and a passing guardrail is inert.

How this was found

Running this bundle (4.0.0-rc1) against conductor 3.32.0-rc18: 3 failures, reproduced identically across 4 runs. On 3.32.0-rc.14 the same bundle is green, and #1365 (merged 2026-07-20) postdates the bundle release (2026-07-14). The third failure, Suite 16 test_guardrail_pass_no_interference, is also unaddressed here — a passing guardrail ends the SSE stream in error rather than done, which likewise looks server-side.

Suite 17 has 27 cases. 19 use validStatuses: BOTH (COMPLETED|FAILED), 5 use
["FAILED"] for raise, and only two use a strict ["COMPLETED"] — #7
aout_custom_retry and #9 aout_custom_fix.

#7 is the outlier. Retry is model-dependent: the agent may or may not drop
MARKER42 within max_retries, and since conductor-oss/conductor#1365 a retry that
exhausts now escalates to raise rather than looping to the turn cap, so the run
legitimately ends FAILED. Every other retry case in this file already accepts
both outcomes (#3, #6, #12, #15, #21, #24). Aligning #7 with them.

This does not weaken the check that matters: notContains "MARKER42" is still
asserted whenever the run COMPLETEs, so a leak still fails the test.

Deliberately NOT relaxing #27 tout_custom_fix, which also fails on
3.32.0-rc18. #9 aout_custom_fix stays strict and passes, asserting
contains: "REDACTED" — so agent-output fix reliably applies and completes, while
tool-output fix does not. That asymmetry points at the tool-output fix path
server-side, and relaxing the assertion would hide it.
@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

Flag Coverage Δ
integration-v4-sm 41.47% <ø> (ø)
integration-v5-sdkdev 43.87% <ø> (-0.02%) ⬇️
unit 73.89% <ø> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.
see 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@manan164
manan164 merged commit eff089c into main Jul 29, 2026
47 of 55 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants